package main

import "fmt"

func main() {
	/*
		var ages [20]int
		fmt.Println(ages)

		ages = [20]int{1, 3, 4, 4}
		var ages2 = [...]int{1, 2, 34}

		fmt.Println(ages2, len(ages2))

		var ages3 = [...]int{1: 9, 3: 3, 8: 10}
		fmt.Println(ages3)

		var ages4 = [...][2]int{
			[2]int{1, 2},
			[2]int{3, 4},
		}
		// 多为数组只有外层可以使用...
		fmt.Println(ages4)
	*/

	/*
		// 切片
		var s1 []int // 没有分配内存, == nil
		s1 = []int{1, 2, 4}
		fmt.Println(s1)
		fmt.Println(s1 == nil)

		// make初始化，分配内存
		s2 := make([]string, 2, 4)
		fmt.Println(s2)
		fmt.Println(s2 == nil)

		// 切片不存值
		s1 := []int{1, 2, 3}
		s2 := s1
		s2[1] = 100
		fmt.Println(s2)
		fmt.Println(s1)
		// [1 100 3]
		// [1 100 3]



		var s1 []int // nil
		s1 = append(s1, 1)
		fmt.Println(s1)

		a1 := []int{1, 2, 3}
		a2 := a1
		a2[1] = 100
		var a3 = make([]int, 3, 3)
		copy(a3, a1)
		fmt.Println(a1, a2)
		fmt.Println(a3)
	*/
	// 指针
	// addr := "hehe"
	// addrP := &addr
	// addrV := *addrP
	// fmt.Println(addrP, addrV)

	// map
	var m1 map[string]int
	fmt.Println(m1 == nil)
	m1 = make(map[string]int, 10)
	m1["tansi"] = 100
	fmt.Println(m1)
	fmt.Println(m1["liii"]) // 如果key不存在返回的是value对应类型的零值
	// 返回的值是布尔型，我们通常用ok去接收它
	score, ok := m1["hk"]
	if !ok {
		fmt.Println("没有")
	} else {
		fmt.Println("分数是:", score)
	}
	delete(m1, "xxx") // 删除的key不存在什么都不干
	delete(m1, "tansi")
	fmt.Println(m1)
}
